﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	while (p < arr + sz) 
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}
//int main()
//{
//	const char* pstr = "hello bit.";
//	printf("%s\n", pstr);
//	return 0;
//}

/*
qsort函数的模拟实现
*/
//#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
//
//struct stu
//{
//	char name[20];
//	int age;
//};
//
//int int_comp(const void* p1, const void* p2)
//{
//	return *(int*)p1 - *(int*)p2;
//}
//
//int cmp_stu_age(const void * p1,const void * p2)
//{
//	return ((struct stu*)p1)->age - ((struct stu*)p2)->age;
//}
//
//int cmp_stu_name(const void* p1, const void* p2)
//{
//	return strcmp(((struct stu*)p1)->name, ((struct stu*)p2)->name);
//}
//
//void swap(void* p1, void* p2, int size)
//{
//	int i = 0;
//	for (i = 0; i < size; i++)
//	{
//		char temp = *((char*)p1 + i);
//		*((char*)p1 + i) = *((char*)p2 + i);
//		*((char*)p2 + i) = temp;
//	}
//}
//
//void my_qsort(void* base, int count, int size, int (*cmp)(void*, void*))
//{
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < count - 1; i++)
//	{
//		for (j = 0; j < count - 1 - i; j++)
//		{
//			if (cmp((char*)base + j * size, (char*)base + (j + 1) * size) > 0)
//			{
//				swap((char*)base + j * size, (char*)base + (j + 1) * size, size);
//			}
//		}
//	}
//}
//
//int test1()
//{
//	int arr[] = { 7,5,8,9,56,7,1,2,3,7 };
//	my_qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(arr[0]), int_comp);
//	int i = 0;
//	for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//	return 0;
//}
//
//int test2()
//{
//	struct stu s[] = { {"wang ming",20},{"xiao li",18}, {"wei long",19} };
//	my_qsort(s, sizeof(s) / sizeof(s[0]), sizeof(s[0]), cmp_stu_age);
//	int i = 0;
//	for (i = 0; i < sizeof(s) / sizeof(s[0]); i++)
//	{
//		printf("%s %d\n", s[i].name,s[i].age);
//	}
//	printf("\n");
//	my_qsort(s, sizeof(s) / sizeof(s[0]), sizeof(s[0]), cmp_stu_name);
//	for (i = 0; i < sizeof(s) / sizeof(s[0]); i++)
//	{
//		printf("%s %d\n", s[i].name, s[i].age);
//	}
//	return 0;
//}
//
//int main()
//{
//
//	test1();
//	test2();
//	return 0;
//}

/*

*/
//#include<stdio.h>
//int main()
//{
//	int a[3][4] = { 0 };
//	printf("%d\n", sizeof(a));
//	printf("%d\n", sizeof(a[0][0]));
//	printf("%d\n", sizeof(a[0]));
//	printf("%d\n", sizeof(a[0] + 1));
//	printf("%d\n", sizeof(*(a[0] + 1)));
//	printf("%d\n", sizeof(a + 1));
//	printf("%d\n", sizeof(*(a + 1)));
//	printf("%d\n", sizeof(&a[0] + 1));
//	printf("%d\n", sizeof(*(&a[0] + 1)));
//	printf("%d\n", sizeof(*a));
//	printf("%d\n", sizeof(a[3]));
//}

//int main()
//{
//	char arr1[] = "ab";
//	char arr2[20] = "xxxxxxxxxxx";
//	strcpy(arr2, arr1);
//	strncpy(arr2, arr1, 5);
//	return 0;
//}
//int main()
//{
//	char arr1[20] = "abcdef\0yyyyyyy";
//	char arr2[] = "xxx";
//	strncat(arr1, arr2, 5);
//
//	return 0;
//}
//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abdbcdef";
//	int ret = strncmp(arr1, arr2, 3);
//	printf("%d\n", ret);
//
//	return 0;
//}
//int main()
//{
//	char arr1[] = "zpengwei@yeah.net";
//	//char arr1[] = "192@168#110.123";
//	char sep[] = "@#.";
//	char buf[30] = { 0 };
//	strcpy(buf, arr1);
//
//	char* p = NULL;
//
//	for (p = strtok(buf, sep); p != NULL; p = strtok(NULL, sep))
//	{
//		printf("%s\n", p);
//	}
//
//	return 0;
//}

//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 ...
//	//01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 ...
//	int arr2[] = { 1,2,3,4 ,5};
//	int ret = memcmp(arr1, arr2, 20);
//	printf("%d\n", ret);
//	return 0;
//}

//int main()
//{
//	char a = -1;
//	signed char b = -1;
//	unsigned char c = -1;
//	printf("a=%d\nb=%d\nc=%d\n", a, b, c);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	char a = -128;
//	//原码10000000 00000000 00000000 10000000
//	//补码11111111 11111111 11111111 10000000
//	//截断10000000 a
//	//整型提升 
//	printf("%u\n", a);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	char a = 128;
//	printf("%u\n", a);
//	return 0;
//}

//int main()
//{
//	char a[1000];
//	int i;
//	for (i = 0; i < 1000; i++)
//	{
//		a[i] = -1 - i;
//	}
//	printf("%d", strlen(a));
//	return 0;
//}

//X86环境 ⼩端字节序
//int main()
//{
//	int a[4] = { 1, 2, 3, 4 };
//	int* ptr1 = (int*)(&a + 1);
//	int* ptr2 = (int*)((int)a + 1);
//	printf("%x,%x", ptr1[-1], *ptr2);
//	return 0;
//}
#include <stdio.h>
int check_sys()
{
	int i = 1;
	return (*(char*)&i);
}
int main()
{
	int ret = check_sys();
	if (ret == 1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}